/* VERSION: 1.00 02/12/2015 AUTHOR: Christoph Thewes - thewes@uni-potsdam.de CHANGELOG: 1.0.0: 02/12/2015: Initial release */ VERSION 13 POSITION . 150 690 520 OK ok1 CANCEL can1 SUBMIT sub1, label(Preview) uaction(preview) RESET res1 * ---------- * MAIN * ---------- DIALOG main, label("dtapaper - Create datapaper") tabtitle("Main") BEGIN *------------- GROUPBOX info 5 5 670 120 , label(" DESCRIPTION: ") *------------- TEXT t_info1 +15 +15 640 70 , label("This program creates a datapaper based on the data stored in memory.") TEXT t_info2 @ +15 @ @ , label("It is work in progress and will be harmonized in order to work with different databases in near future.") TEXT t_info3 @ +15 @ @ , label("Check help-file for further information and for the aditional program -setdtapaper-.") TEXT t_info4 @ +30 @ @ , label("") TEXT t_info5 @ +15 @ @ , label("written by Christoph Thewes - University of Potsdam - thewes@uni-potsdam.de") *----------- GROUPBOX dd -15 +50 330 360 , label(" DATA DESCRIPTION: ") *----------- TEXT t_title +15 +20 300 . , label("Title:*") EDIT ed_title @ +20 @ . , error("Title") default(global dp_title) TEXT t_abs @ +20 @ . , label("Abstract:*") EDIT ed_abs @ +20 @ 100 , error("Abstract") default(global dp_abstract) TEXT t_key @ +100 @ . , label(`"Keywords: (separate by ;)"') EDIT ed_key @ +20 @ . , default(global dp_keywords) TEXT t_sour @ +20 @ . , label("Source:") EDIT ed_sour @ +20 @ . , default(global dp_source) TEXT t_acc @ +20 @ . , label("Access (doi/ARK/URL):") EDIT ed_acc @ +20 @ . , default(global dp_access) TEXT t_range @ +35 130 . , label("Time-range of data:") TEXT t_rangef +120 -10 40 . , label(" from:*") COMBOBOX ed_r_y1 @ +18 50 . , dropdown contents(year) error("Time-range") default(global dp_from) TEXT t_ranget +80 -18 100 . , label(" to: (optional)") COMBOBOX ed_r_y2 @ +18 50 . , dropdown contents(year) default(global dp_to) *----------- GROUPBOX pi +120 -323 330 170 , label(" PERSONAL INFORMATION: ") *----------- TEXT t_author +15 +20 300 . , label("Author:*") TEXT t_author2 @ +15 +3 . , label("(e.g. Brown, Charlie and Bunny, Bugs and Duck, Donald)") EDIT ed_auth @ +20 -3 . , error("Author") default(global dp_author) TEXT t_inst @ +20 @ . , label("Institution:") EDIT ed_inst @ +20 @ . , default(global dp_institution) TEXT t_cont @ +20 @ . , label("Contact/E-Mail:*") EDIT ed_cont @ +20 @ . , error("Contact/E-Mail") default(global dp_contact) *------------ GROUPBOX out -15 +55 330 75 , label(" OUTPUT: ") *------------ TEXT t_path +15 +20 300 . , label("Save as:*") FILE path @ +20 @ . , label("Browse") filter("HTML-File|*.html") save error("File destination") default(global dp_path) TEXT t_star 10 503 300 . , label("* = required") END * ----------- * OPTIONS * ----------- DIALOG opt, label("dtapaper - Create datapaper") tabtitle("Options") BEGIN *------------ GROUPBOX opt 5 5 350 70 , label(" VARIABLE LIST: ") *------------ CHECKBOX cb_vars +15 +20 . . , default(global dp_cb_var) onclickon(script lab_vars_on) onclickoff(script lab_vars_off) option(vars) TEXT t_vars +23 @ 190 . , label("Include list of variables and labels") CHECKBOX cb_val +0 +20 . . , default(global dp_cb_val) option(values) onclickon(opt.t_valnote.show) onclickoff(opt.t_valnote.hide) TEXT t_val +23 @ 120 . , label("Include value labels") TEXT t_valnote +105 @ 120 . , label("(May require some time)") *------------ GROUPBOX note 5 +35 350 380 , label(" LABELS AND NOTES: ") *------------ CHECKBOX cb_lab +15 +25 . . , default(global dp_cb_lab) TEXT t_lab +23 @ 190 . , label("Label dataset [Author(Year): Title]") CHECKBOX cb_note -23 +25 . . , default(global dp_cb_note) onclickon(script n_allon) onclickoff(script n_alloff) TEXT t_note +23 @ 150 . , label("Add a note to the dataset") RADIO r1 @ +25 . . , first label("Add note with all information") onclickon(script n_all) default(global dp_r1) RADIO r2 @ +20 . . , last label("Let me choose:") onclickon(script n_choose) default(global dp_r2) CHECKBOX cb_n_auth +107 +3 . . , default(1) TEXT t_n_auth +25 @ 120 . , label("Author") CHECKBOX cb_n_inst -25 +20 . . , default(1) TEXT t_n_inst +25 @ 120 . , label("Institution") CHECKBOX cb_n_cont -25 +20 . . , default(1) TEXT t_n_cont +25 @ 120 . , label("Contact") CHECKBOX cb_n_title -25 +20 . . , default(1) TEXT t_n_title +25 @ 120 . , label("Title") CHECKBOX cb_n_abs -25 +20 . . , default(1) TEXT t_n_abs +25 @ 120 . , label("Abstract") CHECKBOX cb_n_key -25 +20 . . , default(1) TEXT t_n_key +25 @ 120 . , label("Keywords") CHECKBOX cb_n_sour -25 +20 . . , default(1) TEXT t_n_sour +25 @ 120 . , label("Source") CHECKBOX cb_n_acc -25 +20 . . , default(1) TEXT t_n_acc +25 @ 120 . , label("Access") CHECKBOX cb_n_time -25 +20 . . , default(1) TEXT t_n_time +25 @ 120 . , label("Time-Range") CHECKBOX cb_n_date -25 +20 . . , default(1) TEXT t_n_date +25 @ 120 . , label("Current Date") CHECKBOX cb_n_id -25 +20 . . , default(1) TEXT t_n_id +25 @ 120 . , label("Identifier") CHECKBOX cb_n_drop -132 +20 . . , default(global dp_cb_drop) TEXT t_n_drop +23 @ 120 . , label("Drop old note") CHECKBOX cb_save -46 +35 . . , default(global dp_cb_save) TEXT t_save +23 @ 120 . , label("save and replace data with new label/note") *------------ GROUPBOX add 370 5 310 110 , label(" ADDITIONAL INFORMATION: ") *------------ CHECKBOX cb_n +15 +25 . . , default(global dp_cb_n) TEXT t_n +23 @ 165 . , label("Include number of observations (N)") CHECKBOX cb_k -23 +25 . . , default(global dp_cb_nvar) TEXT t_k +23 @ 150 . , label("Include number of variables") CHECKBOX cb_name -23 +25 . . , default(global dp_cb_name) TEXT t_name +23 @ 150 . , label("Include filename") END * ============================================================================================================= * ============================================================================================================= PROGRAM command BEGIN put "quietly {" stata hidden queue call program mainprog call program crhtml put "}" stata hidden queue * DISPLAY NOTIFICATION * -------------------- put `"capture confirm file "`path'""' stata hidden queue put `"if _rc noi di as err _n `" Creation of datapaper was not successful."' _n `" Maybe path or filename has invalid characters."' _n(2) `" use only a-z, A-Z, 0-9, - and _"'"' stata hidden queue * put `"if !_rc noi di as txt _n `" Datapaper successfully created. Please send the file"' _n as res `" {browse "`temppath'dtapaper_temp.html":`path'}"' _n as txt `" to"' as res `" dtapaper@ratswd.de"'"' put `"if !_rc noi di as txt _n `" Datapaper successfully created."' _n as res `" {browse "`temppath'dtapaper_temp.html":`path'}"' stata hidden queue END PROGRAM preview BEGIN put "quietly {" stata hidden queue call program mainprog call program smclpreview put "}" stata hidden queue END PROGRAM mainprog BEGIN require main.ed_title main.ed_abs main.ed_r_y1 main.ed_auth main.ed_cont main.path * PATH-CHECKS (and replace \ with /) * ---------------------------------- put "local path " put main.path stata hidden queue put `"local path : subinstr local path "\" "/",all"' stata hidden queue put `"local pos = strpos(reverse("`path'"),".")"' stata hidden queue put `"local filecheck = reverse(substr(reverse("`path'"),1,`pos'-1))"' stata hidden queue * add .html extension if missing put `"if "`pos'" == "0" local path "`path'.html""' stata hidden queue * change .htm to .html put `"if "`filecheck'" == "htm" local path "`path'l""' stata hidden queue put `"local pos = strpos(reverse("`path'"),".")"' stata hidden queue put `"local filecheck = reverse(substr(reverse("`path'"),1,`pos'-1))"' stata hidden queue put `"if "`filecheck'" != "html" noi di as err "No filename specified / Wrong file-type: *.html required""' stata hidden queue * CONVERT PATH TO SMCL * -------------------- put `"local smclpath : subinstr local path ".html" ".smcl",all "' stata hidden queue put `"capture confirm file "`smclpath'""' stata hidden queue put `"if !_rc {"' stata hidden queue put `"erase "`smclpath'""' stata hidden queue put "}" stata hidden queue * CREATE LOCALS * ------------- put `"local author ""' main.ed_auth `"""' stata hidden queue put `"local institut ""' main.ed_inst `"""' stata hidden queue put `"local title ""' main.ed_title `"""' stata hidden queue put `"local abstract ""' main.ed_abs `"""' stata hidden queue put `"local key ""' main.ed_key `"""' stata hidden queue put `"local source ""' main.ed_sour `"""' stata hidden queue put `"local access ""' main.ed_acc `"""' stata hidden queue put `"local contact ""' main.ed_cont `"""' stata hidden queue put `"local range1 ""' main.ed_r_y1 `"""' stata hidden queue put `"local range2 ""' main.ed_r_y2 `"""' stata hidden queue * GET CURRENT DATE put `"local date: di %tdDD/NN/CCYY date(c(current_date),"DMY")"' stata hidden queue put `"local year : di %tdCY date(c(current_date),"DMY")"' stata hidden queue * GET FILENAME put `"local filename "`c(filename)'""' stata hidden queue put `"local filename : subinstr local filename ".dta" """' stata hidden queue * CREATE ID put `"local id : word 1 of `author'"' stata hidden queue put `"local id : subinstr local id "," """' stata hidden queue put `"local id = lower("`id'_`filename'_`date'")"' stata hidden queue * OPEN EMPTY FILE * --------------- put `"file close _all"' stata hidden queue put `"if "`filecheck'" == "html" file open data using "`smclpath'", replace write text"' stata hidden queue * WRITE BASIC INFORMATION INTO SMCL-FILE * -------------------------------------- put `"file write data "{smcl}" _n(2) "{hi:{center: `title'}}" _n(2) "' put `""{center:{bf:Data Paper} (`id')}" _n "' if main.ed_acc { put `""{center:`access'}" _n(2) "' } put `""{center:`author'}" _n "' if main.ed_inst { put `""{center:`institut'}" _n(2) "' } else { put `" _n"' } put `""{title:Abstract:}" _n(2) "' put `""{p}`abstract'{p_end}" _n(2) "' if main.ed_key { put `""{it:Keywords:} `key' " _n "' } if main.ed_r_y2 { put `""{it:Time-range:} `range1' - `range2' " _n "' } else { put `""{it:Time-range:} `range1'" _n "' } if main.ed_sour { put `""{it:Source:} `source' " _n(2) "' } put `""{it:Contact:} `contact' " _n(2) "' if opt.cb_n { put `""{it:Observations:} `c(N)' " _n "' } if opt.cb_k { put `""{it:Variables:} `c(k)' " _n "' } if opt.cb_name { put `""{it:Filename:} `filename' " _n(2) "' } stata hidden queue * INCLUDE LIST OF VARIABLES & LABELS & VALUE-LABELS (via ADO) * ----------------------------------------------------------- if opt.cb_vars { put "dtapaper " beginoptions option opt.cb_vars option opt.cb_val endoptions stata hidden queue } * CLOSE FILE * ---------- put "file close data" stata hidden queue * WRITE DATA-LABEL * ---------------- if opt.cb_lab { put `"label data "`author' (`year'): `title'""' stata hidden queue } * WRITE DATA-NOTE * --------------- if opt.cb_n_drop { put "note drop _dta" stata hidden queue } if opt.cb_n_auth { put `"note _dta: Author: `author'"' stata hidden queue } if opt.cb_n_inst { put `"note _dta: Institution: `institut'"' stata hidden queue } if opt.cb_n_cont { put `"note _dta: Contact: `contact'"' stata hidden queue } if opt.cb_n_title { put `"note _dta: Title: `title'"' stata hidden queue } if opt.cb_n_abs { put `"note _dta: Abstract: `abstract'"' stata hidden queue } if opt.cb_n_key { put `"note _dta: Keywords: `key'"' stata hidden queue } if opt.cb_n_sour { put `"note _dta: Source: `source'"' stata hidden queue } if opt.cb_n_acc { put `"note _dta: Access: `access'"' stata hidden queue } if opt.cb_n_time { if main.ed_r_y2 { put `"note _dta: Time-Range: `range1' - `range2'"' } else { put `"note _dta: Time-Range: `range1'"' } stata hidden queue } if opt.cb_n_date { put `"note _dta: Date: `date'"' stata hidden queue } if opt.cb_n_id { put `"note _dta: ID: `id'"' stata hidden queue } * SAVE DATASET * ------------ if opt.cb_save { put "capture save, replace" stata hidden queue put `"if _rc == 608 noi di as err "Data is read-only. Please save manually.""' stata hidden queue put `"if !_rc save, replace"' stata hidden queue } END PROGRAM crhtml BEGIN * DELETE OLD HTML-FILE * -------------------- put `"capture confirm file "`path'""' stata hidden queue put `"if !_rc {"' stata hidden queue put `"copy "`path'" "`path'.bak", replace"' stata hidden queue put `"erase "`path'""' stata hidden queue put "}" stata hidden queue * CONVERT TO HTML * --------------- put `"log html "`smclpath'" "`path'", replace"' stata hidden queue * GET SYSTEM TEMP-PATH * -------------------- put `"local temppath `c(tmpdir)'"' stata hidden queue put `"local temppath : subinstr local temppath "\" "/",all"' stata hidden queue * Add "/" at the end if missing in `c(tmpdir)' put `"local tmpcheck = reverse(substr(reverse("`temppath'"),1,1))"' stata hidden queue put `"if "`tmpcheck'" != "/" local temppath "`temppath'/""' stata hidden queue * OPEN FILE * --------- put `"file open html using "`temppath'dtapaper_temp.html", replace write text"' stata hidden queue put `"file write html `"

Below you can see your datapaper.
"'"' *put `"`"Please send this file as an attachment to the following adress: "'"' *put `"`"datapaper@ratswd.de
"'"' put `"`"The file is located at "`path'"

"'"' put `"`" "'"' stata hidden queue * CLOSE FILE * ---------- put "file close html" stata hidden queue * DELETE TEMP SMCL-FILE * --------------------- put `"erase "`smclpath'""' stata hidden queue END PROGRAM smclpreview BEGIN put `"capture confirm file "`smclpath'""' stata hidden queue put `"if !_rc {"' stata hidden queue put `"view "`smclpath'""' stata hidden queue put "}" stata hidden queue END * -------------- * scripts * -------------- * ENABLE/DISABLE CHECKBOXES * ------------------------- SCRIPT n_cb_ena BEGIN opt.cb_n_auth.enable opt.cb_n_inst.enable opt.cb_n_cont.enable opt.cb_n_title.enable opt.cb_n_abs.enable opt.cb_n_key.enable opt.cb_n_sour.enable opt.cb_n_auth.enable opt.cb_n_acc.enable opt.cb_n_date.enable opt.cb_n_time.enable opt.cb_n_id.enable END SCRIPT n_cb_dis BEGIN opt.cb_n_auth.disable opt.cb_n_inst.disable opt.cb_n_cont.disable opt.cb_n_title.disable opt.cb_n_abs.disable opt.cb_n_key.disable opt.cb_n_sour.disable opt.cb_n_auth.disable opt.cb_n_acc.disable opt.cb_n_date.disable opt.cb_n_time.disable opt.cb_n_id.disable END * SETON/SETOFF CHECKBOXES * ----------------------- SCRIPT n_cb_on BEGIN opt.cb_n_auth.seton opt.cb_n_inst.seton opt.cb_n_cont.seton opt.cb_n_title.seton opt.cb_n_abs.seton opt.cb_n_key.seton opt.cb_n_sour.seton opt.cb_n_auth.seton opt.cb_n_acc.seton opt.cb_n_date.seton opt.cb_n_time.seton opt.cb_n_id.seton END SCRIPT n_cb_off BEGIN opt.cb_n_auth.setoff opt.cb_n_inst.setoff opt.cb_n_cont.setoff opt.cb_n_title.setoff opt.cb_n_abs.setoff opt.cb_n_key.setoff opt.cb_n_sour.setoff opt.cb_n_auth.setoff opt.cb_n_acc.setoff opt.cb_n_date.setoff opt.cb_n_time.setoff opt.cb_n_id.setoff END * ENABLE/DISABLE CB_LABELS * ------------------------ SCRIPT n_t_ena BEGIN opt.t_n_auth.enable opt.t_n_inst.enable opt.t_n_cont.enable opt.t_n_title.enable opt.t_n_abs.enable opt.t_n_key.enable opt.t_n_sour.enable opt.t_n_auth.enable opt.t_n_acc.enable opt.t_n_date.enable opt.t_n_time.enable opt.t_n_id.enable END SCRIPT n_t_dis BEGIN opt.t_n_auth.disable opt.t_n_inst.disable opt.t_n_cont.disable opt.t_n_title.disable opt.t_n_abs.disable opt.t_n_key.disable opt.t_n_sour.disable opt.t_n_auth.disable opt.t_n_acc.disable opt.t_n_date.disable opt.t_n_time.disable opt.t_n_id.disable END * COMBINE SCRIPTS * --------------- SCRIPT n_allon BEGIN opt.r1.enable opt.r2.enable script n_cb_on script n_cb_dis script n_t_dis opt.r1.seton opt.cb_n_drop.enable opt.t_n_drop.enable END SCRIPT n_alloff BEGIN opt.r1.disable opt.r2.disable script n_cb_off script n_cb_dis script n_t_dis opt.cb_n_drop.disable opt.t_n_drop.disable opt.cb_n_drop.setoff END SCRIPT n_all BEGIN script n_cb_on script n_cb_dis script n_t_dis END SCRIPT n_choose BEGIN script n_cb_ena script n_t_ena END SCRIPT lab_vars_on BEGIN opt.cb_val.enable opt.t_val.enable END SCRIPT lab_vars_off BEGIN opt.cb_val.disable opt.t_val.disable opt.cb_val.setoff END SCRIPT lab_val_on BEGIN opt.t_valnote.show opt.cb_num.enable opt.t_num.enable END SCRIPT lab_val_off BEGIN opt.t_valnote.hide opt.cb_num.disable opt.t_num.disable opt.cb_num.setoff END * -------------- * lists * -------------- LIST year BEGIN (type in year if list is not sufficent) 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 1999 1998 1997 1996 1995 1994 1993 1992 1991 1990 1989 1988 1987 1986 1985 1984 1983 1982 1981 1980 (type in year if list is not sufficent) END