Пример #1
0
  public void init() {
    TotalBudget.getInstance();

    Integer height = null;
    Integer width = null;
    Map<String, List<String>> parameters = Window.Location.getParameterMap();
    if (parameters.containsKey("w") && parameters.containsKey("h")) {
      height = Integer.parseInt(parameters.get("h").get(0));
      width = Integer.parseInt(parameters.get("w").get(0));
    }

    mResultsGrid = new ResultGrid();
    mResultsGrid.setWidth("100%");

    Integer pieWidth = width == null ? 485 : width;
    Integer pieHeight = height == null ? 400 : height;
    mPieCharter = new PieCharter(this, mEmbedded, pieWidth, pieHeight);
    mPieCharter.setWidth(pieWidth + "px");
    mPieCharter.setHeight(pieHeight + "px");

    Integer timeWidth = width == null ? 686 : width;
    Integer timeHeight = height == null ? 400 : height;
    mTimeLineCharter = new TimeLineCharter(this, mEmbedded, timeWidth, timeHeight);
    mTimeLineCharter.setWidth(timeWidth + "px");
    mTimeLineCharter.setHeight(timeHeight + "px");

    mBreadcrumbs = new HTML("");
    mBreadcrumbs.setHeight("20px");
    mBreadcrumbs.setWidth("100%");

    mYearSelection = new ListBox();
    mYearSelection.addChangeHandler(
        new ChangeHandler() {
          @Override
          public void onChange(ChangeEvent event) {
            Integer index = mYearSelection.getSelectedIndex();
            String yearStr = mYearSelection.getItemText(index);
            Integer year;
            try {
              year = Integer.parseInt(yearStr);
            } catch (Exception e) {
              yearStr = yearStr.split(" ")[0];
              year = Integer.parseInt(yearStr);
            }
            selectYear(year);
          }
        });

    mSearchBox = new SuggestBox(new BudgetSuggestionOracle());
    mSearchBox.setWidth("300px");
    mSearchBox.setAutoSelectEnabled(false);
    mSearchBox.addSelectionHandler(
        new SelectionHandler<Suggestion>() {
          @Override
          public void onSelection(SelectionEvent<Suggestion> event) {
            final BudgetSuggestion bs = (BudgetSuggestion) event.getSelectedItem();

            BudgetAPICaller api = new BudgetAPICaller();
            api.setCode(bs.getCode());
            api.setParameter("depth", "0");
            api.setParameter("text", bs.getTitle());

            api.go(
                new BudgetAPICallback() {

                  @Override
                  public void onSuccess(JSONArray data) {
                    if (data.size() > 0) {
                      Integer year =
                          (int) data.get(0).isObject().get("year").isNumber().doubleValue();
                      newCodeAndYear(bs.getCode(), year);
                    }
                  }
                });
          }
        });

    mSummary1 = new Label();
    mSummary2 = new Label();
    mSummary2_1 = new Label();
    mSummary3 = new HTML();
    mSummary3_1 = new HTML();

    try {
      mBudgetNews = new BudgetNews();
    } catch (Exception e) {
      Log.error("Failed to init mBudgetNews", e);
    }

    mCheatSheet = new HTML("(הסברים)");
    final DecoratedPopupPanel simplePopup = new DecoratedPopupPanel(true);
    simplePopup.setWidth("450px");
    HTML simplePopupContents =
        new HTML(
            "<h4>מונחון מקוצר</h4>"
                + "<lu>"
                + "<li><b>נטו</b>: <u>תקציב הוצאה נטו</u> – הסכום המותר להוצאה בשנה כלשהי כפי שמפורט בחוק התקציב. תקציב זה מכונה גם \"תקציב המזומנים\".</li>"
                + "<li><b>ברוטו</b>: <u>תקציב ההוצאה נטו</u> בתוספת <u>תקציב ההוצאה המותנית בהכנסה</u> – תקציב נוסף המותר בהוצאה, ובלבד שיתקבלו תקבולים למימון ההוצאה מגורמים חוץ-ממשלתיים. תקבולים אלו אינם כוללים אגרה המשולמת לאוצר המדינה שהוטלה על-פי חיקוק שנחקק אחרי תחילת שנת הכספים 1992, ואינה כוללת הכנסה שמקורה במלווה (חוץ מתקציבי פיתוח וחשבון הון).</li>"
                + "<li><b>הקצאה</b>: <u>תקציב מקורי</u> – התקציב שאושר בכנסת במסגרת חוק התקציב. ייתכנו הבדלים בין הצעת התקציב לבין התקציב שיאושר בכנסת בסופו של דבר.</li>"
                + "<li><b>הקצאה מעודכנת</b>: <u>תקציב על שינוייו</u> – תקציב המדינה עשוי להשתנות במהלך השנה. שינויים אלו כוללים תוספות, הפחתות והעברות תקציביות בין סעיפי תקציב (באישור ועדת הכספים של הכנסת). נוסף על כך, פעמים רבות מועברים עודפים מחויבים משנה קודמת הנכללים בתקציב זה. רוב השינויים בתקציב דורשים את אישורה של ועדת הכספים של הכנסת. התקציב בסוף השנה הכולל את השינויים שנעשו בו במהלך השנה נקרא התקציב על שינוייו או התקציב המאושר.</li>"
                + "<li><b>שימוש</b>:  <u>ביצוע</u> – התקציב שכבר נוצל ושולם בפועל על-ידי החשב.</li>"
                + "<li><b>ערך ריאלי ונומינלי</b>:  ראו הסבר ב<a href='http://he.wikipedia.org/wiki/%D7%A2%D7%A8%D7%9A_%D7%A8%D7%99%D7%90%D7%9C%D7%99_%D7%95%D7%A2%D7%A8%D7%9A_%D7%A0%D7%95%D7%9E%D7%99%D7%A0%D7%9C%D7%99' target ='_blank'>ויקיפדיה</a>.</li>"
                + "<li><b>ערך יחסי</b>:  האחוז היחסי של סעיף זה מכלל תקציב המדינה</li>"
                + "</lu>"
                + "<br/>"
                + "<i>לחץ מחוץ לחלונית זו לסגירתה</i>"
                + "<br/>"
                + "מקור: <a href='http://www.knesset.gov.il/mmm/data/docs/m02217.doc' target='_blank'>מסמך Word ממחלקת המחקר של הכנסת</a>"
                + "<p><b>התקציב הפתוח הוא פרויקט התנדבותי של עמותת 'הסדנא לידע ציבורי'. הנתונים המופיעים"
                + " בתקציב הפתוח נסמכים על פרסומי המדינה ואינם באים לשקף כל דעה שהיא. אין לסדנא לידע ציבורי"
                + " כל אחריות על השימוש בפרויקט וראוי לבדוק את הנתונים לגופם במקורותיהם לפני הסתמכות עליהם.</b></p>");
    simplePopupContents.setStyleName("obudget-cheatsheet-popup");
    simplePopup.setWidget(simplePopupContents);
    mCheatSheet.addClickHandler(
        new ClickHandler() {
          @Override
          public void onClick(ClickEvent event) {
            Widget source = (Widget) event.getSource();
            int left = source.getAbsoluteLeft() + 10;
            int top = source.getAbsoluteTop() + 10;
            simplePopup.setPopupPosition(left, top);
            simplePopup.show();
          }
        });

    History.addValueChangeHandler(this);
  }
Пример #2
0
  /**
   * Display the events for the cell located at <code>column</code>, <code>row</code>
   *
   * @param row
   * @param column
   * @param date
   * @param currentMonth
   */
  private void drawEvents(int row, int column, final Date date) {
    final FlexTable grid = (FlexTable) getWidget();

    // final VerticalPanel cell = (VerticalPanel) grid.getWidget(row,
    // column);
    final FlowPanel cell = (FlowPanel) grid.getWidget(row, column);

    if (cell == null)
      throw new NullPointerException(
          "The specified cell (" + row + ',' + column + ") doesn't exist.");

    // Displaying events
    final TreeSet<Event> sortedEvents =
        new TreeSet<Event>(
            new Comparator<Event>() {

              @Override
              public int compare(Event o1, Event o2) {
                int compare = 0;

                if (o1 == null && o2 == null) return 0;
                else if (o2 == null) return 1;
                else if (o1 == null) return -1;

                if (compare == 0 && o1.getDtstart() != null && o2.getDtstart() != null) {
                  long o1Start = o1.getDtstart().getTime();
                  long o2Start = o2.getDtstart().getTime();

                  if (o1Start < o2Start) compare = -1;
                  else if (o1Start > o2Start) compare = 1;
                }

                if (compare == 0 && o1.getSummary() != null && o2.getSummary() != null)
                  compare = o1.getSummary().compareTo(o2.getSummary());

                return compare;
              }
            });

    for (final Calendar calendar : calendars) {
      final Map<Date, List<Event>> eventMap = normalize(calendar);

      final List<Event> events = eventMap.get(date);

      if (events != null) {
        sortedEvents.addAll(events);
      }
    }

    final Iterator<Event> iterator = sortedEvents.iterator();
    for (int i = 0; iterator.hasNext() && i < eventLimit; i++) {
      final Event event = iterator.next();

      final ClickableFlowPanel flowPanel = new ClickableFlowPanel();
      flowPanel.addStyleName("calendar-event");

      boolean fullDayEvent = false;

      final StringBuilder eventDate = new StringBuilder();
      eventDate.append(hourFormatter.format(event.getDtstart()));
      if (event.getDtend() != null) {
        eventDate.append(" ");
        eventDate.append(hourFormatter.format(event.getDtend()));

        if (event.getDtstart().getDate() != event.getDtend().getDate()
            || event.getDtstart().getMonth() != event.getDtend().getMonth()
            || event.getDtstart().getYear() != event.getDtend().getYear()) {
          fullDayEvent = true;
          flowPanel.addStyleName("calendar-fullday-event");
        }
      }

      final InlineLabel dateLabel = new InlineLabel(eventDate.toString());
      dateLabel.addStyleName("calendar-event-date");

      final InlineLabel eventLabel = new InlineLabel(event.getSummary());
      eventLabel.addStyleName("calendar-event-label");

      if (fullDayEvent)
        flowPanel.addStyleName("calendar-fullday-event-" + event.getParent().getStyle());
      else eventLabel.addStyleName("calendar-event-" + event.getParent().getStyle());

      if (!fullDayEvent) flowPanel.add(dateLabel);
      flowPanel.add(eventLabel);

      final DecoratedPopupPanel detailPopup = new DecoratedPopupPanel(true);

      final Grid popupContent = new Grid(event.getParent().isEditable() ? 5 : 3, 1);
      popupContent.setText(0, 0, event.getSummary());
      popupContent.getCellFormatter().addStyleName(0, 0, "calendar-popup-header");

      if (!fullDayEvent) {
        popupContent.getCellFormatter().addStyleName(1, 0, "calendar-popup-date");
        popupContent
            .getCellFormatter()
            .addStyleName(1, 0, "calendar-event-" + event.getParent().getStyle());
        popupContent.setText(1, 0, eventDate.toString());
      } else popupContent.setText(1, 0, "");

      if (event.getDescription() != null && !"".equals(event.getDescription())) {
        popupContent.getCellFormatter().addStyleName(2, 0, "calendar-popup-description");
        popupContent.setText(2, 0, event.getDescription());
      } else popupContent.setText(2, 0, "");

      if (event.getParent().isEditable()
          && ProfileUtils.isGranted(authentication, GlobalPermissionEnum.EDIT_PROJECT_AGENDA)) {

        final Anchor editAnchor = new Anchor(I18N.CONSTANTS.calendarEditEvent());
        editAnchor.addClickHandler(
            new ClickHandler() {

              @Override
              public void onClick(ClickEvent clickEvent) {
                delegate.edit(event, CalendarWidget.this);
              }
            });

        final Anchor deleteAnchor = new Anchor(I18N.CONSTANTS.calendarDeleteEvent());
        deleteAnchor.addClickHandler(
            new ClickHandler() {

              @Override
              public void onClick(ClickEvent clickEvent) {
                delegate.delete(event, CalendarWidget.this);
                detailPopup.hide();
              }
            });

        popupContent.setWidget(3, 0, editAnchor);
        popupContent.setWidget(4, 0, deleteAnchor);
      }

      detailPopup.setWidget(popupContent);

      flowPanel.addClickHandler(
          new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
              final int left = flowPanel.getAbsoluteLeft() - 10;
              final int bottom = Window.getClientHeight() - flowPanel.getAbsoluteTop();

              detailPopup.setWidth((getCellWidth(CELL_DEFAULT_WIDTH) + 20) + "px");

              // Show the popup
              detailPopup.setPopupPositionAndShow(
                  new PositionCallback() {

                    @Override
                    public void setPosition(int offsetWidth, int offsetHeight) {
                      detailPopup.getElement().getStyle().setPropertyPx("left", left);
                      detailPopup.getElement().getStyle().setProperty("top", "");
                      detailPopup.getElement().getStyle().setPropertyPx("bottom", bottom);
                    }
                  });
            }
          });

      cell.add(flowPanel);
    }

    if (eventLimit != UNDEFINED && sortedEvents.size() > eventLimit) {
      final Anchor eventLabel = new Anchor("\u25BC");
      final Date thisDate = new Date(date.getTime());
      eventLabel.addClickHandler(
          new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
              startDate = thisDate;
              setDisplayMode(DisplayMode.WEEK);
            }
          });
      eventLabel.addStyleName("calendar-event-limit");
      cell.add(eventLabel);
    }
  }