Search in sources :

Example 1 with SelectRenderer

use of db.SelectRenderer in project common by zenlunatics.

the class Surveys method newAnswerColumn.

// ----------------------------------------------------------------------
private static ColumnBase<?> newAnswerColumn(String question_id, String display_name, String pre_text, String post_text, String answer_type, String type_data, boolean required, DBConnection db) {
    ColumnBase<?> column;
    if (answer_type.equals("Choices")) {
        if (type_data.charAt(0) == 'r')
            column = new Column("a" + question_id).setInputRenderer(new SelectRenderer(type_data.substring(5).split("\n")).setType(web.Select.Type.RADIO));
        else
            column = new Column("a" + question_id).setInputRenderer(new SelectRenderer(type_data.substring(6).split("\n")).setAllowNoSelection(true));
    } else if (answer_type.equals("Rating")) {
        String[] td = type_data.split("\\|");
        column = new Column("a" + question_id).setInputRenderer(new RatingInputRenderer(Integer.parseInt(td[0]), td[2], Integer.parseInt(td[1]), td[3]));
    } else {
        TextAreaColumn c = new TextAreaColumn("a" + question_id);
        if (answer_type.equals("Integer")) {
            c.setCols(10);
            c.setRows(1);
        } else if (answer_type.equals("String")) {
            c.setCols(Integer.parseInt(type_data));
            c.setRows(1);
        } else if (answer_type.equals("Text"))
            c.setCols(80);
        column = c;
    }
    column.setDisplayName(display_name);
    if (required)
        column.setIsRequired(true);
    if (pre_text != null)
        column.setPreText(pre_text);
    if (post_text != null)
        column.setPostText(post_text);
    return column;
}
Also used : TextAreaColumn(db.column.TextAreaColumn) LookupColumn(db.column.LookupColumn) BooleanColumn(db.column.BooleanColumn) Column(db.column.Column) TextAreaColumn(db.column.TextAreaColumn) SelectRenderer(db.SelectRenderer)

Example 2 with SelectRenderer

use of db.SelectRenderer in project common by zenlunatics.

the class EventProvider method _newViewDef.

// --------------------------------------------------------------------------
@Override
public ViewDef _newViewDef(String name, Site site) {
    if (name.equals(m_name)) {
        ViewDef view_def = new EventViewDef(m_name, m_support_registrations);
        view_def.addFormHook(new FormHook() {

            @Override
            public void after(View view, View.Mode mode, boolean printer_friendly, Request request) throws IOException {
                writeAutomaticReminders(view, request);
            }
        });
        if (m_access_policy != null)
            view_def.setAccessPolicy(m_access_policy);
        view_def.setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM);
        view_def.setFrom(m_events_table);
        view_def.setRecordName("Event");
        ArrayList<String> column_names_form = new ArrayList<String>();
        DBConnection db = new DBConnection(site);
        for (int i = 0; i < m_filter_columns.size(); i += 2) {
            column_names_form.add(m_filter_columns.get(i));
            view_def.setColumn(new Column(m_filter_columns.get(i)).setDefaultValue(m_filter_columns.get(i + 1)).setIsHidden(true));
        }
        db.close();
        column_names_form.add("date");
        view_def.setColumn(new Column("date").setDisplayName(m_start_date_label).setIsRequired(true));
        if (m_events_have_start_time) {
            column_names_form.add("start_time");
            column_names_form.add("end_time");
        }
        if (m_events_have_event) {
            column_names_form.add("event");
            view_def.setColumn(new Column("event").setIsRequired(true));
        }
        column_names_form.add("notes");
        if (m_events_can_repeat) {
            column_names_form.add("repeat");
            view_def.setColumn(new Column("repeat").setInputAndValueRenderers(new SelectRenderer(s_repeat_periods).setOnChange("var i=this.selectedIndex;var d=document.querySelector('#date_row input');var ed=document.querySelector('#end_date_row input');if(i==0)ed.value='';else if(i==1){if(ed.value=='')ed.value=d.value;}else if(ed.value==d.value)ed.value='';$('end_date_row').style.display=i==0?'none':null;return false"), true));
            column_names_form.add("end_date");
            view_def.setColumn(new Column("end_date").setDisplayName(m_end_date_label));
        }
        if (m_events_have_category) {
            column_names_form.add(m_events_table + "_categories_id");
            m_categories.setAllowEditing(!m_only_admins_can_edit_categories);
            view_def.setColumn(m_categories.newColumn(m_events_table + "_categories_id").setDisplayName("category"));
        }
        if (m_events_have_location) {
            String locations_table = getLocationsTable();
            column_names_form.add(locations_table + "_id");
            m_locations.setAllowEditing(!m_only_admins_can_edit_locations);
            view_def.setColumn(m_locations.newColumn(locations_table + "_id").setDisplayName("location"));
        }
        if (m_events_have_color) {
            column_names_form.add("color");
            view_def.setColumn(new ColorColumn("color"));
        }
        if (m_support_reminders)
            view_def.addRelationshipDef(new OneToMany(m_name + "_reminders").setSpanFormCols(false));
        if (m_support_registrations) {
            column_names_form.add("register_people");
            view_def.setColumn(new Column("register_people").setDisplayName("allow people to register for this " + getEventCrumb()));
        }
        if (m_events_are_owned) {
            if (m_access_policy == null)
                view_def.setAccessPolicy(new Or(new RecordOwnerAccessPolicy().add().delete().edit(), new RoleAccessPolicy("calendar editor")));
            column_names_form.add("_owner_");
            LookupColumn owner_column = new PersonColumn("_owner_", false, site.getPeopleFilter()).setDefaultToUserId().setDisplayName("posted by");
            if (m_role == null)
                owner_column.setIsReadOnly(true);
            view_def.setColumn(owner_column);
        }
        column_names_form.add("_timestamp_");
        view_def.setColumn(new Column("_timestamp_").setDisplayName("added").setIsReadOnly(true).setShowOnAddForm(false));
        view_def.setColumnNamesForm(column_names_form.toArray(new String[column_names_form.size()]));
        return view_def;
    }
    if (name.equals(getCategoriesTable()))
        return m_categories.addHooks(new ViewDef(name).setColumn(new ColorColumn("color")));
    if (name.equals(getLocationsTable()))
        return m_locations.newViewDef(name, site).setDefaultOrderBy("lower(text)").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setRecordName("Location").setColumn(new Column("text").setDisplayName("location").setIsRequired(true));
    if (name.equals(m_name + "_registrations"))
        return new ViewDef(name).setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setFrom(m_events_table + "_registrations").setRecordName("Registration").setColumnNamesTableAndForm(new String[] { "person", "note" }).setColumn(new LookupColumn("person", "people", "first,last").setDefaultToUserId().setFilter(site.getPeopleFilter()));
    if (name.equals(m_name + "_reminders")) {
        RecordOwnerAccessPolicy access_policy = (RecordOwnerAccessPolicy) new RecordOwnerAccessPolicy().add().delete().edit();
        return new ViewDef(name).setAccessPolicy(access_policy).setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setFrom(m_events_table + "_reminders").setRecordName("Reminder").setColumnNamesForm(new String[] { "before", "note", "email" }).setColumnNamesTable(new String[] { "email", "before" }).setColumn(new EmailColumn("email") {

            @Override
            public String getDefaultValue(Request request) {
                return request.getUser().getEmail();
            }

            @Override
            public String validate(String table, String value, int id, Request request) {
                if ("poster".equals(value))
                    return null;
                return super.validate(table, value, id, request);
            }
        }.setDisplayName("send to").setIsRequired(true)).setColumn(new ReminderWhenColumn("before", m_name, m_events_table, m_events_have_start_time, m_events_can_repeat, false).setDisplayName("when")).setColumn(access_policy.getColumn("person", site));
    }
    if (name.equals(m_name + "_reminders auto"))
        return new ViewDef(name).setBaseFilter(m_events_table + "_id IS NULL").setDialogModes(View.Mode.ADD_FORM, View.Mode.EDIT_FORM, View.Mode.READ_ONLY_FORM).setFrom(m_events_table + "_reminders").setRecordName("Reminder").setColumnNamesForm(new String[] { "before", "note", "email" }).setColumnNamesTable(new String[] { "email", "before" }).setColumn(new EmailColumn("email") {

            @Override
            public String validate(String table, String value, int id, Request request) {
                if ("poster".equals(value))
                    return null;
                return super.validate(table, value, id, request);
            }
        }.setDisplayName("send to").setIsRequired(true).setTitle("Enter the special value \"poster\" to send to the event poster")).setColumn(new ReminderWhenColumn("before", m_name, m_events_table, m_events_have_start_time, m_events_can_repeat, true).setDisplayName("when"));
    return null;
}
Also used : DBConnection(db.DBConnection) Or(db.access.Or) EmailColumn(db.column.EmailColumn) ArrayList(java.util.ArrayList) ViewDef(db.ViewDef) PersonColumn(app.PersonColumn) RecordOwnerAccessPolicy(db.access.RecordOwnerAccessPolicy) JDBCColumn(db.JDBCColumn) LookupColumn(db.column.LookupColumn) EmailColumn(db.column.EmailColumn) PersonColumn(app.PersonColumn) Column(db.column.Column) ColorColumn(db.column.ColorColumn) RoleAccessPolicy(db.access.RoleAccessPolicy) ColorColumn(db.column.ColorColumn) Request(app.Request) IOException(java.io.IOException) OneToMany(db.OneToMany) View(db.View) LookupColumn(db.column.LookupColumn) SelectRenderer(db.SelectRenderer) FormHook(db.FormHook)

Example 3 with SelectRenderer

use of db.SelectRenderer in project common by zenlunatics.

the class ToDos method _newViewDef.

// --------------------------------------------------------------------------
@Override
public ViewDef _newViewDef(String name, Site site) {
    if (name.equals("todos")) {
        ViewDef view_def = new ViewDef(name);
        view_def.setDefaultOrderBy("task");
        view_def.setRecordName("Task");
        ArrayList<String> column_names_form = new ArrayList<String>();
        column_names_form.add("task");
        column_names_form.add("notes");
        if (m_group_by_project) {
            column_names_form.add("project");
            view_def.setColumn(new Column("project").setPostText("(optional)"));
            view_def.setSectionDef(new SectionDef("project", Type.SEPARATOR_ROWS, new OrderBy("project")));
        }
        if (m_prioritize) {
            view_def.setDefaultOrderBy("priority");
            column_names_form.add("priority");
            view_def.setColumn(new Column("priority").setInputRenderer(new SelectRenderer(new String[] { "1 - high", "2 - medium", "3 - low" })));
        }
        if (m_assign_tasks) {
            column_names_form.add("assigned_to");
            view_def.setColumn(new LookupColumn("assigned_to", "people", "first,last").setFilter(this).setDefaultToUserId());
        }
        if (m_one_table != null) {
            column_names_form.add(m_one_table + "_id");
            view_def.setColumn(new Column(m_one_table + "_id").setDefaultToSessionAttribute().setIsHidden(true));
        }
        view_def.setColumnNamesForm(column_names_form.toArray(new String[column_names_form.size()]));
        view_def.setColumnNamesTable(new String[] { "task" });
        view_def.setColumn(new Column("task") {

            @Override
            public boolean writeValue(View view, Map<String, Object> data, Request p) throws IOException {
                String notes = view.data().getString("notes");
                if (notes.length() > 0)
                    p.writer.write("<div onmouseover=\"if(!this.f){var e=$(this.lastChild);this.f=new Fx.Slide(e,{link:'cancel'});this.f.hide();e.setStyle('display','');$(this).addEvent('mouseout',function(e){if(!this.isAncestor(e.relatedTarget))this.f.slideOut()}.bind(this))}this.f.slideIn()\">");
                p.writer.write(view.data().getString("task"));
                if (notes.length() > 0) {
                    p.writer.write("<div style=\"background-color:white;padding:5px;font-size:smaller;display:none\">");
                    view.writeColumnHTML("notes");
                    p.writer.write("</div></div>");
                }
                return true;
            }
        });
        return view_def;
    }
    return null;
}
Also used : OrderBy(db.OrderBy) ArrayList(java.util.ArrayList) Request(app.Request) ViewDef(db.ViewDef) IOException(java.io.IOException) View(db.View) LookupColumn(db.column.LookupColumn) SectionDef(db.SectionDef) LookupColumn(db.column.LookupColumn) Column(db.column.Column) SelectRenderer(db.SelectRenderer)

Aggregations

SelectRenderer (db.SelectRenderer)3 Column (db.column.Column)3 LookupColumn (db.column.LookupColumn)3 Request (app.Request)2 View (db.View)2 ViewDef (db.ViewDef)2 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 PersonColumn (app.PersonColumn)1 DBConnection (db.DBConnection)1 FormHook (db.FormHook)1 JDBCColumn (db.JDBCColumn)1 OneToMany (db.OneToMany)1 OrderBy (db.OrderBy)1 SectionDef (db.SectionDef)1 Or (db.access.Or)1 RecordOwnerAccessPolicy (db.access.RecordOwnerAccessPolicy)1 RoleAccessPolicy (db.access.RoleAccessPolicy)1 BooleanColumn (db.column.BooleanColumn)1 ColorColumn (db.column.ColorColumn)1